// 配置axios基地址
axios.defaults.baseURL = 'https://hmajax.itheima.net'
// 判断是否存在本地数据
const data = localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')) : {}

// 公共的提示框函数
const showToast = (message) => {
    // 先生成实例对象
    const toastObj = new bootstrap.Toast(document.querySelector('.my-toast'))
    toastObj.show()
    // 让提示框组件内容改变
    document.querySelector('.my-toast .toast-body').innerHTML = message
}

// token是否存在验证
const checkToken = () => {
    // 先去本地存储获取token
    const token = data.token
    console.log(token)

    if (!token) {
        // 提示登录
        showToast('请先登录')
        // 跳转页面
        setTimeout(() => {
            window.location.href = './login.html'
        }, 1000)
    }
}

// 回显用户名
const renderUserName = () => {
    const { username } = data
    if (username) {
        document.querySelector('.username').innerHTML = username
    }
}

// 抽取退出登录功能
const logout = () => {
    document.querySelector('#logout').addEventListener('click', e => {
        // 清空本地存储
        localStorage.clear()
        // 提示用户退出成功
        showToast('退出成功')
        // 跳转登录页面
        setTimeout(() => {
            window.location.href = './login.html'
        }, 1000)
    })
}

// 请求拦截器 => 每次请求发送之前都会经过这个处理函数
// 添加请求拦截器
// axios.interceptors.request({成功的回调函数},{失败的回调函数})
axios.interceptors.request.use(config => {
    // 在发送请求之前做些什么
    console.log('我被经过了')
    // config 请求相关的信息 url method
    // console.log(config)

    // 只有有了token 才添加到请求体中
    if (data.token) {
        config.headers['Authorization'] = data.token
    }
    return config
}, error => {
    // 对请求错误做些什么
    return Promise.reject(error)
})

// 添加响应拦截器
// axios.interceptors.response({成功的回调函数},{失败的回调函数})
axios.interceptors.response.use(response => {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    // response 就是服务端返回的数据 即res
    // 数据剥离 => 在响应拦截器的 return response.data
    console.log(response)
    
    return response.data
}, error => {
    // 超出 2xx 范围的状态码都会触发该函数。
    console.dir(error)
    if (error.response.status === 401) {
        // 提示用户
        showToast('登录过期,请重新登陆')
        // 清空存储数据
        localStorage.clear()
        // 跳转登录页面
        setTimeout(() => {
            window.location.href = './login.html'
        }, 1500)
    }
    // 对响应错误做点什么
    return Promise.reject(error)
})